<?php
session_start();

// 设置图片的宽度和高度
$width = 100;
$height = 30;

// 创建一个真彩色图像
$image = imagecreatetruecolor($width, $height);

// 定义背景颜色
$backgroundColor = imagecolorallocate($image, 255, 255, 255); // 白色背景
imagefill($image, 0, 0, $backgroundColor);

// 定义字符集，这里包含数字和大小写字母
$charset = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
$captchaCode = '';

// 生成随机验证码字符串
for ($i = 0; $i < 5; $i++) {
    $captchaCode.= $charset[rand(0, strlen($charset) - 1)];
}

// 将验证码存储在会话中
$_SESSION['captcha'] = $captchaCode;

// 定义字体颜色（黑色）
$textColor = imagecolorallocate($image, 0, 0, 0);

// 设置字体大小和样式（这里使用系统默认字体）
$fontSize = 5;
$fontAngle = 0;
$x = 10;
$y = 20;

// 在图片上绘制验证码字符
for ($i = 0; $i < strlen($captchaCode); $i++) {
    imagettftext($image, $fontSize, $fontAngle, $x + ($i * 15), $y, $textColor, 0, $captchaCode[$i]);
}

// 添加一些干扰线
for ($i = 0; $i < 5; $i++) {
    $lineColor = imagecolorallocate($image, rand(0, 200), rand(0, 200), rand(0, 200));
    imageline($image, rand(0, $width), rand(0, $height), rand(0, $width), rand(0, $height), $lineColor);
}

// 设置响应头，指定输出内容为图像
header('Content-Type: image/png');

// 输出图像为 PNG 格式
imagepng($image);

// 释放图像资源
imagedestroy($image);
?>